class Solution {
    public String longestPalindrome(String s) {
        int begin = 0;
        int len = 0;
        int n = s.length();
        for (int i = 0; i < n; i++) {
            // 先扩展奇数长度
            int left = i, right = i;
            while (left >= 0 && right < n && s.charAt(left) == s.charAt(right)) {
                left--;
                right++;
                if (right - left - 1 > len) {
                    begin = left + 1;
                    len = right - left - 1;
                }
            }
            // 再扩展偶数长度
            left = i; right = i + 1;
            while (left >= 0 && right < n && s.charAt(left) == s.charAt(right)) {
                left--;
                right++;
                if (right - left - 1 > len) {
                    begin = left + 1;
                    len = right - left - 1;
                }
            }
        }
        return s.substring(begin, begin + len);
    }
}